May 22, 2021
자바스크립트 엔진은 메모리 힙과 콜 스택으로 동작한다는 것을 우리는 알고있다. 콜 스택은 자바스크립트 엔진이 실행하고자 하는 함수가 담기지만, 그냥 코드가 담기는 것이 아니다. 함수가 실행되기 위해서는 지역변수, 전역변수와 같은 함수의 실행환경을 알아야 한다.
실행 컨텍스트는 이런 함수의 실행정보를 담는 단위이다. 운영체제에서 프로세스에 대한 정보가 PCB에 담겨 관리되는 것을 떠올려보면 유사하다.
실행 컨텍스트는 아래와 같은 정보들로 구성된다.
그리고 이 정보들은 Variable Object, Scope Chain, thisValue 세 개의 객체에 담겨 관리된다.
변수 객체에는 변수와 함수선언에 대한 정보가 담긴다. 이때 전역 실행 컨텍스트의 경우와 함수 실행 컨텍스트의 경우에 따라 변수 객체가 가르키는 값이 조금 달라진다.
전역 실행 컨테스트의 경우에는 변수객체가 전역 객체를 가르키며 전역함수의 객체와 전역 변수의 값을 가진다.
함수 실행 컨텍스트의 경우에는 함수의 인자들이 담긴 배열형태의 객체와 내부 함수의 함수 객체, 지역 변수의 값을 가진다.